//定制请求的实例

//导入axios nmp install axios
import axios from 'axios'
//导入element-plus的提示框
import { ElMessage } from 'element-plus'
//定义一个变量，记录公共的前缀
const baseURL = '/api';
const instance=axios.create({baseURL})

//由于加载顺序不能这么导入
// import { useRouter } from 'vue-router'; /* 导入路由，通过路由实现页面的跳转 */
// const router = useRouter();
import router from '@/router'

import {useTokenStore} from '@/stores/token.js'//导入token的store
//添加请求拦截器
instance.interceptors.request.use(
    (config)=>{
        //请求前的回调
        const tokenStore = useTokenStore();
        //判断token是否存在
        if(tokenStore.token){
            //添加token
            config.headers.Authorization = tokenStore.token;
        }
        return config;
    },
    (err)=>{
        //请求错误的回调
        Promise.reject(err);
        
    }
)

//添加响应拦截器
instance.interceptors.response.use(res=>{
    //判断业务状态吗
    if(res.data.code===0){
        return res.data;
    }
    //操作失败
    // alert(res.data.msg?res.data.msg:"服务异常");
    ElMessage.error(res.data.msg?res.data.msg:"服务异常");
    //异步操作的状态转换为失败
    return Promise.reject(res.data);
    
},
err=>{
    //判断响应状态码，如果为401，则跳转到登录页面
    if(err.response.status===401){
        ElMessage.error("请先登录");
        router.push('/login');
    }
    alert("服务异常");
    return Promise.reject(err);//异常的状态转化成失败的状态
})

export default instance;